import { Coordinate } from "ol/coordinate";
import { ProjectionLike, transform } from "ol/proj";

export function transform4326to3857(coordinate: Coordinate) {
  return transform(coordinate, "EPSG:4326", "EPSG:3857");
}



/**
 *
 * 各种坐标系的经纬度转换
 * @param {Array[Number,Number]} lonlat 经纬度坐标
 * @param {*} from 源坐标系类型
 *                   wgs84:标准经纬度(国际标准，谷歌国外地图、osm地图等国外的地图一般都是这个)
 *                   bd09:百度坐标系
 *                   gcj02:火星坐标也叫国测局坐标系(搜搜、阿里云、高德地图、腾讯)
 * @param {*} to 目标坐标系类型
 * @returns {number[Number,Number]} 目标坐标系的经纬度
 */
// export function transformLonLat(lonlat, from, to) {
//   if (!lonlat || lonlat.length !== 2) {
//     console.error("经纬度格式有误:", lonlat);
//     return null;
//   }
//   // 不需要转换
//   if (from === to) return lonlat;
//   // 构建转换器集合
//   const conversions = {
//     wgs84togcj02: coordtransform.wgs84togcj02,
//     gcj02towgs84: coordtransform.gcj02towgs84,
//     gcj02tobd09: coordtransform.gcj02tobd09,
//     bd09togcj02: coordtransform.bd09togcj02,
//     wgs84tobd09: (lng, lat) => {
//       const wgs84togcj02 = coordtransform.wgs84togcj02(lng, lat);
//       return coordtransform.gcj02tobd09(wgs84togcj02[0], wgs84togcj02[1]);
//     },
//     bd09towgs84: (lng, lat) => {
//       const bd09togcj02 = coordtransform.bd09togcj02(lng, lat);
//       return coordtransform.gcj02towgs84(bd09togcj02[0], bd09togcj02[1]);
//     }
//   };
//   const convert = conversions[from + "to" + to];
//   if (convert) return convert(lonlat[0], lonlat[1]);
//   throw new Error(`缺少坐标系转换器: ${from} to ${to}`);
// }

// 先将标准经纬度转换为火星坐标
export const wgs84togcj02 = ["wgs84", "gcj02"];

/**
 * 经纬度转麦卡托投影坐标
 * @param {Array[Number,Number]} xzqhCenter
 * @returns {Array[Number,Number]} 投影坐标
 */
export function transformPos(xzqhCenter = []/* , options = {} */) {
  // const { transformCoordinate = wgs84togcj02 } = options;
  // if (Array.isArray(transformCoordinate) && transformCoordinate.length === 2) {
  //   // 将标准经纬度转换为坐标
  //   xzqhCenter = transformLonLat(xzqhCenter, ...transformCoordinate);
  // }

  return transform(xzqhCenter, "EPSG:4326", "EPSG:3857");
}
